package algorithm.variousAlgorithm;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: SelfDividingNumbers
 * @Description 728. 自除数
 * 自除数是指可以被它包含的每一位数整除的数。
 *
 * 例如，128 是一个 自除数 ，因为128 % 1 == 0，128 % 2 == 0，128 % 8 == 0。
 * 自除数 不允许包含 0 。
 *
 * 给定两个整数left和right ，返回一个列表，列表的元素是范围[left, right]内所有的 自除数 。
 *
 * @Author skywingking
 * @Date 2022/3/31 9:35 下午
 **/
public class SelfDividingNumbers {
    public List<Integer> selfDividingNumbers(int left, int right) {
        List<Integer> ans = new ArrayList<>();
        for(int i = left; i <= right; i++){
            if(isSelfDividing(i)){
                ans.add(i);
            }
        }
        return ans;
    }

    private boolean isSelfDividing(int num){
        int temp = num;
        while(temp > 0){
            int digit = temp % 10;
            if(digit == 0 || num % digit != 0){
                return false;
            }
            temp /= 10;
        }
        return true;
    }
}